package com.kamistoat.rocketmqlearning.msgProducer;

import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.springframework.stereotype.Component;

/**
 * 工厂模式创建Producer。
 * 由于工厂本身是不变的，所以工程本身完全可以用@Component来注解
 */
@Component
public class MsgProducerFactory {
    /**
     * 创建一个Producer实例。注意每次调用该方法产生的都是新的Producer实例，需要手动执行start() 和 shutdown().
     * 同样。如果有其他业务方的Producer，再写另一个方法即可。
     */
    public DefaultMQProducer newMsgProducer() {
        DefaultMQProducer producer = new DefaultMQProducer();
        producer.setProducerGroup("producerGroup");
        producer.setDefaultTopicQueueNums(4);
        producer.setSendMsgTimeout(10000);
        producer.setCompressMsgBodyOverHowmuch(4096);
        producer.setRetryAnotherBrokerWhenNotStoreOK(false);
        producer.setRetryTimesWhenSendFailed(2);
        producer.setRetryTimesWhenSendAsyncFailed(2);
        producer.setNamesrvAddr("172.19.0.20:9876;172.19.0.21:9877");
        return producer;
    }
}
